一、 作用
内部类可以很好的实现隐藏,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以加上这几个修饰词。
内部类拥有外围类的所有元素的访问权限,可以直接访问外部类的私有属性及方法
可以间接实现多重继承,多个内部类继承不同的类形成了一个类中复用了多个类的方法。
可以避免在继承一个父类和一个接口的时候导致的方法重复定义。
二、详解
1.实现隐藏
1 | public class Example { |
2.可以无条件地访问外围类的所有元素
1 | public class TagBean { |
3.可以间接实现多重继承
个特点非常重要,个人认为它是内部类存在的最大理由之一。正是由于他的存在使得Java的继承机制更加完善。大家都知道Java只能继承一个类,它的多重继承在我们没有学习内部类之前是用接口来实现的。但使用接口有时候有很多不方便的地方。比如我们实现一个接口就必须实现它里面的所有方法。而有了内部类就不一样了。它可以使我们的类继承多个具体类或抽象类。大家看下面的例子。
1 | class Test{ |
四、 避免同名方法的冲突。
如果你的类要继承一个类,还要实现一个接口,可是你发觉你继承的类和接口里面有两个同名的方法怎么办?你怎么区分它们??这就需要我们的内部类了。看下面的代码
1 | public interface Incrementable { |
increment()这个方法是属于覆盖MyIncrement这里的方法呢?还是Incrementable这里的方法。我怎么能调到MyIncrement这里的方法?显然这是重复定义。